package com.microservice.wechat.controller;

import com.microservice.common.utils.WechatTokenUtil;
import com.microservice.wechat.entity.dto.MediaUploadResponse;
import com.microservice.wechat.service.WechatMediaService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 微信素材管理控制器
 */
@Slf4j
@RestController
@RequestMapping("/wechat/media")
public class WechatMediaController {
    
    @Autowired
    private WechatMediaService wechatMediaService;
    @Resource
    private WechatTokenUtil wechatTokenUtil;
    
    /**
     * 上传图片接口
     * @param file 上传的文件（form-data格式，字段名为media）
     * @param type 媒体文件类型（image/voice/video/thumb）
     * @param accessToken 微信访问令牌
     * @return 上传响应结果
     */
    @PostMapping("/upload")
    public MediaUploadResponse uploadMedia(
            @RequestParam("media") MultipartFile file,
            @RequestParam("type") String type,
            @RequestParam("access_token") String accessToken) {
        log.info("接收到上传素材请求，文件名: {}, 类型: {}, accessToken: {}", 
                file.getOriginalFilename(), type, accessToken);
        accessToken=wechatTokenUtil.getRandomAccessToken().get("token");
        return wechatMediaService.uploadMedia(file, type, accessToken);
    }

    /**
     * 上传临时素材接口
     * @param file 上传的文件（form-data格式，字段名为media）
     * @param type 媒体文件类型（image/voice/video/thumb）
     * @param accessToken 微信访问令牌
     * @return 上传响应结果
     */
    @PostMapping("/uploadMediaId")
    public MediaUploadResponse uploadMediaId(
            @RequestParam("media") MultipartFile file,
            @RequestParam("type") String type,
            @RequestParam("access_token") String accessToken) {
        log.info("接收到上传素材请求，文件名: {}, 类型: {}, accessToken: {}",
                file.getOriginalFilename(), type, accessToken);
        return wechatMediaService.uploadMediaId(file, type, accessToken);
    }
}
